package es.entidades;


/**
 * Representa una Entidad.<br>
 * Una entidad es cualquier objeto del juego: jugador, enemigos, indicador de salud, logo, 
 * bola de fuego, arma, etc.
 * @author Miguel Vicente
 */
public class Entidad {
	
	private static int SIGUIENTE_ID = 0;
	
	private int id;
	private String tipo;
	private boolean activa;
	private Entidad padre;
	
	/**
	 * Constructor. Crea una nueva Entidad.
	 * @param tipo Tipo de entidad
	 */
	public Entidad(String tipo) {
		this.id = SIGUIENTE_ID++;
		this.tipo = tipo;
		this.activa = true;
		this.padre = null;
	}
	/**
	 * Devuelve el tipo de la Entidad.
	 * @return String
	 */
	public String getTipo() {
		return tipo;
	}
	/**
	 * Asigna un tipo a la entidad
	 * @param tipo Tipo a asignar
	 */
	public void setTipo(String tipo) {
		this.tipo = tipo;
	}
	
	/**
	 * Devuelve true si la entidad esta activa y false en caso contrario.
	 * @return boolean
	 */
	public boolean isActiva() {
		return activa;
	}
	/**
	 * Asigna un valor true/false que indica si la entidad esta activa.
	 * @param activa true/false
	 */
	public void setActiva(boolean activa) {
		this.activa = activa;
	}
	/**
	 * Devuelve el ID de la entidad. Es un identificador unico de la entidad.
	 * @return ID de la entidad
	 */
	public int getId() {
		return id;
	}
	/**
	 * Devuelve la Entidad padre de esta Entidad. Si no tiene padre devuelve null.
	 * @return Entidad
	 */
	public Entidad getPadre() {
		return padre;
	}
	/**
	 * Asigna una Entidad padre a esta entidad.
	 * @param padre Entidad padre a asignar
	 */
	public void setPadre(Entidad padre) {
		this.padre = padre;
	}
	@Override
	public String toString() {
		return "ID: " + id + ", Tipo: " + tipo + "\n";
	}
	
}
